public class Test {
//    public static void main4(String[] args) {
//
//        short a=10;
//        byte b=11;
//
//        int i=12;
//        int c=a+b;
//        System.out.println(c);
//        c=a+i;
//        System.out.println(c);
//        short k=a+b;
//
//    }
//    public static void main5(String[] args) {
//        boolean a=true;
//        a=(bollean)10;
//        int i=(int)a;
//
//    }
////    public static void main5(String[] args) {
//
//        byte a=128;
//        byte b=127;
//
//
//    }
    public static void main(String[] args) {
        int a;
        float i;
        double b=3.14;
        a=(int)b;
        i=(float)b;
        System.out.println(a);
        System.out.println(i);




    }
//    public static void main2(String[] args) {
//
//        int a = 10;
//        long b = 100L;
//        b = a; // int-->long，数据范围由小到大，隐式转换
//        a = (int)b; // long-->int, 数据范围由大到小，需要强转，否则编译失败
//        float f = 3.14F;
//        double d = 5.12;
//        d = f; // float-->double，数据范围由小到大，隐式转换
//        f = (float)d; // double-->float, 数据范围由大到小，需要强转，否则编译失败
//        a = d; // 报错，类型不兼容
//        a = (int)d; // int没有double表示的数据范围大，需要强转，小数点之后全部丢弃
//        byte b1 = 100; // 100默认为int，没有超过byte范围，隐式转换
//        byte b2 = (byte)257; // 257默认为int，超过byte范围，需要显示转换，否则报错
//        boolean flag = true;
//        a = flag; // 编译失败：类型不兼容
//        flag = a; // 编译失败：类型不兼容

    }
//    public static void main1(String[] args) {
//
//
//        System.out.println(18);// 整型默认情况下是int
//        System.out.println(18.8); // 浮点型默认情况下是double
//
//        int a = 100;
//        long b = 10L;
//        b = a; // a和b都是整形，a的范围小，b的范围大，当将a赋值给b时，编译器会自动将a提升为long类型，然后赋值
//        a = b; // 编译报错，long的范围比int范围大，会有数据丢失，不安全
//        float f = 3.14F;
//        double d = 5.12;
//        d = f; // 编译器会将f转换为double，然后进行赋值
//        f = d; // double表示数据范围大，直接将float交给double会有数据丢失，不安全
//        byte b1 = 100; // 编译通过，100没有超过byte的范围，编译器隐式将100转换为byte
//        byte b2 = 257; // 编译失败，257超过了byte的数据范围，有数据丢失
//    }
//}
